perm filename UPDATE.SAI[11,ALS] blob sn#118988 filedate 1974-09-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00003 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "UPDATE"
C00004 00003	STDBRK(1)
C00010 ENDMK
C⊗;
BEGIN "UPDATE"
DEFINE ⊂="COMMENT";  ⊂ 8/28/73 Inserts corrected headers in NEWPH format;
DEFINE ⊃="⊂"; ⊂ Change this symbol to mean "" to get running commentary;
⊂ When data file is specified as XXX.YYY the program expects to find
   header information on XXX.HRX and it writes out the corrected file;;
⊂ Program CONVER.SAI is used to convert OLDPH files to the NEWPH format
    and to prepare a list of the header for manual corrections which is
    called XXX.HDR;

REQUIRE "BLOCKS.HDR[4,ALS]" SOURCE_FILE;
INTEGER ARRAY LFILE[0:'177];
INTERNAL INTEGER ARRAY INDATA[0:255];
INTEGER ARRAY SYMBOL,SAMPLE[0:127];
INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
INTERNAL INTEGER SEGTOT,RL,EOF,EOFA,BRK;
INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5,CHAN6,CHANX;
STRING READ1,READ2,READ3,FILEL,FILEI,TFILE,TFILEI,FILLST,PREHINT;
INTEGER ARRAY OLDPH,NEWPH[0:63];
BOOLEAN ER;
STDBRK(1);
 SETBREAK(14,"∃",NULL,"INS");
 SETBREAK(15,'11&'12&'14&'15&'40,NULL,"INS");
 SETBREAK(16,'56,NULL,"INA");
 SETBREAK(17,'15,'12,"INS");

CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5; CHAN6←6;
OUTSTR("This program is used to replace the HINT information in the "&CRLF&
    "header of a file specified by the user. It expects a header "&CRLF&
    "correction file of the same name but with the extention of HDX "&CRLF&
    "and it overwrites Tthe input file."&CRLF);
OUTSTR("   Replace ''⊂'' by '''' in line 30/1 for on-line data."&CRLF&LF);

CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
LOOKUP(CHAN4,"MAP.PHN",ER);
WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find MAP.PHN.  File = ");
LOOKUP(CHAN4,TFILE←INCHWL,ER); END;  EOFA←0;
FILLST←INPUT(CHAN4,14);
⊂ OUTSTR("MAP.PHN contains "&CRLF&FILLST&CRLF);
CLOSE(CHAN4);

FOR I←0 STEP 1 UNTIL 127 DO  BEGIN
  WHILE TRUE DO BEGIN
    READ1←SCAN(FILLST,17,K);
    READ3←READ1[1 TO 1];
    IF READ3≠"⊂"  THEN DONE; END;
IF READ3="" THEN DONE;
  SYMBOL[I]←CVASC(SCAN(READ1,15,K));
  SAMPLE[I]←CVASC(SCAN(READ1,15,K));
⊂ OUTSTR(CVOS(SYMBOL[I])&TB&CVOS(SAMPLE[I])&CRLF);
END;
WHILE TRUE DO BEGIN "LISTREAD"
FILEI←STRIN("Data file to be corrected (type name or CR to terminate) ");
IF FILEI="" THEN DONE;

CLOSE(CHAN1); OPEN(CHAN1,"DSK",'10,10,0,0,0,EOF);
LOOKUP(CHAN1,FILEI,ER);
WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEI&" File = ");
LOOKUP(CHAN1,FILEI←INCHWL,ER); END;  EOFA←0;
ARRYIN(CHAN1,LFILE[0],'200);	⊂ Input header;
SEGTOT←(LFILE[0]*6)%256;
⊃ OUTSTR(FILEI&" "&CVS(SEGTOT)&"   ");
⊂  FOR I←0 STEP 1 UNTIL 127 DO OUTSTR(CVOS(LFILE[I])&TB);

READ2←FILEI; FILEL←SCAN(READ2,16,J)&"HDX";
CLOSE(CHAN4); OPEN(CHAN4,"DSK",1,2,0,3500,BRK,EOFA);
LOOKUP(CHAN4,FILEL,ER);
WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&".  File = ");
LOOKUP(CHAN4,FILEL←INCHWL,ER); END;  EOFA←0;
FILLST←INPUT(CHAN4,14);
⊃ OUTSTR("FILLST contains "&CRLF&FILLST&CRLF);
CLOSE(CHAN4);

J←21; ⊃ OUTSTR(CRLF&"Starting FOR I←0 "&CRLF);
FOR J←21 STEP 1 UNTIL 127 DO  BEGIN
  WHILE TRUE DO BEGIN
    READ1←SCAN(FILLST,17,K);
    READ3←READ1[1 TO 1];
    IF READ3≠"⊂" THEN DONE; END;
  IF READ1="" THEN DONE;
⊃  OUTSTR("Read1 contains "&READ1&TB);
  LFILE[J]←CVASC(SCAN(READ1,15,K));
⊂ OUTSTR(CVOS(LFILE[J])&TB&TB);
  FOR M←0 STEP 1 UNTIL 126 DO BEGIN
⊂    OUTSTR(CVOS(SYMBOL[M])&TB);
    IF LFILE[J]=SYMBOL[M] THEN DONE; END;
 OUTSTR(CVSTR(LFILE[J]));   OUTSTR(TB);
  L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(14,LFILE[J],27));
 OUTSTR(CVS(L)&TB);
  L←CVD(SCAN(READ1,15,K)); DPB(L,POINT(8,LFILE[J],35));
 OUTSTR(CVS(L)&TB);
  OUTSTR(CVSTR(SAMPLE[M]));  OUTSTR(CRLF);
⊃   OUTSTR(CVOS(LFILE[J])&CRLF);
  END;
FOR J←J STEP 1 UNTIL 127 DO LFILE[J]←0;

⊃ OUTSTR("eady to write "&FILEI&TB);
OPEN(CHAN4,"DSK",'10,0,10,0,0,EOF);
ENTER(CHAN4,FILEI,0);
ARRYOUT(CHAN4,LFILE[0],'200);
WHILE EOF=0 DO BEGIN
  FOR I←0 STEP 1 UNTIL 255 DO INDATA[I]←0;
  ARRYIN(CHAN1,INDATA[0],256); J←0;
  FOR I←0 STEP 1 UNTIL 255 DO J←J+INDATA[I]; IF J=0 THEN DONE;
  ARRYOUT(CHAN4,INDATA[0],256); END; CLOSE(CHAN1); CLOSE(CHAN4);
OUTSTR(CRLF&"File "&FILEI&" has been written with corrections."&CRLF&LF);
END "LISTREAD";
RELEASE(CHAN1); RELEASE(CHAN2); RELEASE(CHAN3); RELEASE(CHAN4);

END "UPDATE";